#!/bin/sh

#
#  D-Team Technology Co.,Ltd. ShenZhen
#  作者:Vic
#
# 警告:对着屏幕的哥们,我们允许你使用此脚本，但不允许你抹去作者的信息,请保留这段话。
#

. /lib/functions.sh
. /lib/functions/service.sh

global=0
config_file="/etc/config/samba4"

[ ! -f /etc/config/samba4 ] && {
echo "
config samba
	option workgroup 'WORKGROUP'
	option charset 'UTF-8'
	option description 'Samba on OpenWRT'
" > $config_file
}

wait_for_init() {
	for i in `seq 30`
	do
		[ -e /tmp/procd.done ] || {
		sleep 1; continue;
		}
		return
	done
}

smb_handle() {
	config_get path $1 path
	if [  "$path" = "$2" ] ;then
		global=1
	fi
}

chk_en() {
	config_get_bool autoshare $1 autoshare 1
	[ $autoshare -eq 0 ] && exit
}

config_load samba4
config_foreach chk_en samba4

device=`basename $DEVPATH`

case "$ACTION" in
	add)

	case "$device" in
		sd*);;
		md*);;
		hd*);;
		*) return;;
	esac

	path="/dev/$device"

	wait_for_init

	[ "$(uci -q get samba4.@samba[0].autoshare)" == "1" ] && {
		/etc/init.d/samba4 restart
		exit 0;
	}

	cat /proc/mounts | grep -v '/boot\|/opt' | while read j
	do
		str=${j%% *}
		if [ "$str" == $path ];then
			strr=${j#* }
			target=${strr%% *}
			global=0
			config_foreach smb_handle sambashare $target
			name=${target#*/mnt/}
			name=$(echo $name | sed -e "s/^\///")
			if [ $global -eq 0 ] ;then
				echo -e "\n\nconfig sambashare" >> $config_file
				echo -e "\toption auto '1'" >> $config_file
				echo -e "\toption name '$name'" >> $config_file
				echo -e "\toption path '$target'" >> $config_file
				echo -e "\toption read_only 'no'" >> $config_file
				echo -e "\toption guest_ok 'yes'" >> $config_file
				echo -e "\toption create_mask '0666'" >> $config_file
				echo -e "\toption dir_mask '0777'" >> $config_file
				echo -e "\toption device '$device'" >> $config_file
				echo -e "\toption force_root '1'" >> $config_file
				/etc/init.d/samba4 reload
				return
			fi
		fi
	done
	uci -q set samba4.@samba[0].autoshare='1'
	uci commit samba4
	;;

	remove)
		i=0
		while true
		do
			dev=`uci get samba4.@sambashare[$i].device`
			[ $? -ne 0 ] && break

			[ "$dev" = "$device" ] && {
				auto=`uci get samba4.@sambashare[$i].auto`
				[ $auto = "1" ] && {
					mount_dir=`uci get samba4.@sambashare[$i].name`
					uci delete samba4.@sambashare[$i]
					uci commit
					/etc/init.d/samba4 reload
					return
				}
			}
			let i+=1
		done
	;;
esac
